<script>

Function.prototype.mycall = function(context){
    context = context ? context : window
    context.fn = this
    let args = [...arguments].slice(1)
    context.fn(...args)
    delete context.fn
}

let obj = {
    fn : function(a,b,c){
        console.log(this.name+a+b+c)
    }
}
let obj2 = {
    name : 'gailun'
}
window.name = 'yasuo'
obj.fn.mycall(obj2,1,2,3)

</script>